package com.sinosoft.ptas.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.sinosoft.framework.core.common.exception.BusinessException;
import com.sinosoft.ptas.control.dto.ReportDataToExcel;
import com.sinosoft.ptas.control.dto.ReportRemindData;
import com.sinosoft.ptas.control.dto.RetrieveReportData;
import com.sinosoft.ptas.entity.ReportEntity;
import com.sinosoft.ptas.entity.TargetsOfImplPhaseEntity;
/**
 * 整体审核的service
 * @author zhangxiaolong
 *
 */
public interface ReportService {
	/**
	 * 增加
	 * @param reportEntity
	 */
	public String createReport(ReportEntity reportEntity) throws BusinessException;
	
	/**
	 * 通过ID删除
	 * @param id
	 */
	public void deleteReport(String id);
	
	/**
	 * 整体审核表 --修改
	 * @param reportEntity 申报表的实体类
	 */
	public void updateReport( ReportEntity reportEntity)throws BusinessException;
	
	/**
	 * 整体审核表 --修改
	 * @param reportEntity 申报表的实体类
	 */
	public void updateReportForFilePath( ReportEntity reportEntity)throws BusinessException;
	
	/**
	 * 通过ID查询
	 * @param id
	 * @return
	 */
	public ReportEntity retrieveReportById(String id);
	
	/**
	 * 根据省区域编码和年份得到申报表并显示出对应的状态 (如果不传参，就全部查出来，规財司。传年份、省区域编码)
	 * @param divisionCode 省区域编码
	 * @param year 年份
	 * @return
	 */
	public List<ReportEntity> retrieveReport(RetrieveReportData reportDto);
	
	/**
	 * 依据省区域编码和行政区划代码查询申报
	 * @param divisionCode行政区划代码
	 * @param year 年份
	 * @return
	 */
	public List<ReportEntity> retrieveReportByDivisionCodeAndYear(String divisionCode,String year);
	
	/**
	 * 查询申报表
	 * 此方法针对于规財司（规划财务司 Department of planning and Finance）
	 * @param reportDto
	 * @return
	 */
	public List<ReportEntity> retrieveReportForDOPAF(RetrieveReportData reportDto);
	
	/**
	 * 省级主管部门去重查询
	 * @return
	 */
	public  List<ReportEntity> distinctProvincialGovernment();
	
	/**
	 * 规財是查询总体实施期目标
	 * @param reportEntitys
	 * @param target
	 */
	public void createService(List<ReportEntity> reportEntitys,TargetsOfImplPhaseEntity target);
	/**
	 * 查询申报导出给Excal
	 * @param reportDto
	 * @return
	 */
	public List<ReportDataToExcel> retrieveReportForDOPAFToExcel(RetrieveReportData reportDto);
	
	/**
	 * 
	 * @return
	 */
	public List<ReportEntity> retrieveReportForDOPAF2(String divisionCode);
	
	/**
	 * 其他司和财政部查看申报表
	 * @return
	 */
	public List<ReportEntity> retrieveReportForOtherDepartment(RetrieveReportData retrieveReportData);
	
	/**
	 * 根据省区去编码查询申报表信息
	 * @param divisionCode
	 * @return 申报表实体集合
	 */
	public List<ReportEntity>  retrieveReportsByDIVISIONCODE(String divisionCode);
	
	/**
	 * 规財是参看省局默认指标参考值是否填完
	 * @param referValueFinshCount
	 * @return
	 */
	public List<ReportRemindData>  retrieveReportsForRemind(Integer referValueFinshCount);
	
	/**
	 * 其他司查看申报信息
	 * @param orgId 组织机构id
	 * @return List<ReportEntity> 申报信息列表
	 */
	public List<ReportEntity> retrieveReportForOtherDepartment(String orgId);
	
	/**
	 * 每个司局查出对应省局下的实施期目标
	 * @param reportId
	 * @param orgId
	 * @return
	 */
	public List<TargetsOfImplPhaseEntity> retrieveOtherDepartmentTargetPhaseByReportIdAndOrgId(String reportId,String orgId);
}
